package pruebas;

import espacio.Aeropuerto;
import espacio.EspacioAereo;
import aviones.Avion;
import aviones.AvionSimple;
import utilidades.*;
import junit.framework.TestCase;



public class PruebaTrayectoriasAviones extends TestCase {

	public void testPosicionDeUnAvion() {
		Posicion posicionAvion1 = new Posicion(0,5);
		Posicion posicionAvion2 = new Posicion(0,6);
		Avion avion1 = new AvionSimple(posicionAvion1,posicionAvion2);
		assertEquals( avion1.getPosicion() == posicionAvion1 , true);
		
	}
	
	public void testColisionDeAviones() {
		Posicion posicionAvion1 = new Posicion(0,0);
		Posicion posicionAvion2 = new Posicion(0,5);
		Posicion posicionFinalAvion1 = new Posicion(0,1);
		Posicion posicionFinalAvion2 = new Posicion(0,4);
		AvionSimple avion1 = new AvionSimple(posicionAvion1,posicionFinalAvion1);
		AvionSimple avion2 = new AvionSimple(posicionAvion2,posicionFinalAvion2);
		
		assertEquals( avion1.huboColision(avion2) , false );
		
		avion1.desplazar();
		avion2.desplazar();
	
		assertEquals( avion1.huboColision(avion2) , false );

		avion1.desplazar();
		avion2.desplazar();
	
		assertEquals( avion1.huboColision(avion2) , true );
		
	}
	
	public void testTrayectoria(){
		
		Posicion posicionAvion1 = new Posicion(0,0);
		Posicion posicionAvion2 = new Posicion(0,5);
		Posicion posicionAvion3 = new Posicion(3,5);
		Posicion posicionAvion4 = new Posicion(7,4);
		
		
		AvionSimple avion1 = new AvionSimple(posicionAvion1,posicionAvion2);
		
		avion1.getTrayectoria().encolarPosicionEnTrayectoria(posicionAvion3);
		avion1.getTrayectoria().encolarPosicionEnTrayectoria(posicionAvion4);
		
		while (avion1.getPosicion()!=posicionAvion4){
			
			avion1.desplazar();
		}
		
		assertEquals(true, true);
	}
	
	public void testTrayectoriaDeVolumenEnAeropuerto(){
		
		Aeropuerto ezeiza = new Aeropuerto();
		
		EspacioAereo espacioAereo = 
				new EspacioAereo(ezeiza.getLargox(),ezeiza.getAnchoY());
		
		Avion avion = espacioAereo.inicializarAvionAleatorio();
		
		for (int i=0; i<=10000 ; i++){
			
			Posicion unaPosicion = espacioAereo.obtenerPosicionAleatoria();
			avion.getTrayectoria().encolarPosicionEnTrayectoria(unaPosicion);
		}
		
		Posicion ultimaPosicion = new Posicion(0,0);
		
		avion.getTrayectoria().encolarPosicionEnTrayectoria(ultimaPosicion);
		
		while (avion.getPosicion() != ultimaPosicion){
			
			avion.desplazar();
		}
		
		assertEquals(avion.getPosicion(), ultimaPosicion);
		
		
	}
	
}
